package com.geline.easyexcel.domain;

import lombok.Getter;

/**
 * 下拉框类型枚举：定义常用公式
 *
 * @author: mengxin
 * @date: 2024/1/10 14:20
 */
@Getter
public enum DropDownType {
    // VLOOKUP 取标题对应的code；INDIRECT取code对应的名称管理器
    SELECT("单选下拉：引用名称管理器", "=INDIRECT(VLOOKUP(\"$title\",'DS1'!A:B,2,0))"),
    CHECKBOX("多选下拉：引用名称管理器", "=INDIRECT(VLOOKUP(\"$title\",'DS1'!A:B,2,0))"),
    CASCADE("级联下拉：自定义父列", "=INDIRECT(VLOOKUP(INDIRECT(ADDRESS(ROW(),$parentIndex)),'DS1'!A:B,2,0))");

    private String title;
    private String format;

    DropDownType(String title, String format){
        this.title = title;
        this.format = format;
    }

    /**
     * 生成下拉框对应的数据有效性公式
     *
     * @param sheet
     * @param title
     * @return
     */
    public String toFormulaString(String sheet, String title){
        // =INDIRECT(OFFSET('DS1'!A1,MATCH("$title",DS1!$A:$B,0)-1,1,1,1))
        return getFormat().replace("$sheet", sheet).replace("$title", title.trim());
    }

    /**
     * 生成下拉框对应的数据有效性公式
     *
     * @param parentIndex
     * @return
     */
    public String toFormulaString(Integer parentIndex){
        return getFormat().replace("$parentIndex", parentIndex.toString());
    }

}
